You are here: Symbol Reference > Dew Namespace > Dew.Signal Namespace > Dew.Signal.Units Namespace > Classes > SignalUtils Class > SignalUtils Methods > SignalUtils.Integrate Method
Dew Signal for .NET
ContentsIndexHome
Example

Single block and streaming application example:

using Dew.Math; using Dew.Math.Units; using Dew.Signal; using Dew.Signal.Units; using Dew.Math.Tee; using Dew.Math.Editors; using Dew.Signal.Tee; private void button1_Click(object sender, EventArgs e) { int n,i; double FS = 1; //sampling frequency TIntegrateState State2 = new TIntegrateState(); TDiffState State = new TDiffState(); Vector h = MtxExpr.Ramp(30, TMtxFloatPrecision.mvDouble, 0, 1); Vector b = new Vector(h.Length); Vector c = new Vector(h.Length); //single block SignalUtils.Integrate(h, b, ref State2, 1.0/FS); SignalUtils.Differentiate(b, c, ref State, 1.0 / FS); MtxVecTee.DrawIt(c,"Processed in one block",false); //streaming //reset initial conditions State2 = new TIntegrateState(); State = new TDiffState(); n = h.Length / 10; //integer division (!) for (i = 0; i < 10; i++) { h.SetSubRange(i*n,n); b.SetSubRange(i*n,n); c.SetSubRange(i*n,n); SignalUtils.Integrate(h,b, ref State2, 1.0/FS); // Should be: b = [0 , 1 , 3, 6, 10, 15, 21,... ] // But becomes: b = [0, 0.1666, 1.1666, 3.166, 6.166, 10.166, 15.166, 21.166,... ] // because of Simpson SignalUtils.Differentiate(b,c, ref State,1.0/FS); // Should be: c = [0,1,2,3,4,5,6....] // But becomes: c = [0, 0.08333, 0.5833, 1.5, 2.5, 3.5, 4.5....] } c.SetFullRange(); MtxVecTee.DrawIt(c,"Processed per partes, but same result",false); }
Copyright (c) 1999-2024 by Dew Research. All rights reserved.